\documentclass[a4]{article}

\usepackage{amssymb}
\usepackage{amsmath}

\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
%\usepackage{a4wide}

\author{MONTOYA David, CONTAL Emile}
\title{Web Data Management\\Compte rendu de projet}
\date{Automne 2011}

\begin{document}

\maketitle

\section{Introduction}
Nous avons choisi de baser notre projet sur le chapitre
\textit{Putting into Practice - Wrappers and Data Extraction with XSLT}
du livre de référence.
Notre idée a été de créer un schéma pour combiner l'information issue
de différentes bases de données de films telles que
\verb imdb.com , \verb rottentomatoes.com , \verb allocine.fr ,
et ainsi en construire un profil pour chaque film
contenant un rassemblement des critiques, \textit{tags} ou notes
de chacun des sites.

\section{Construction de la liste de film}
La première étape du projet a été de trouver un moyen de parcourir
la liste des films dont nous souhaitons extraire l'information. Comme il n'existe pas une liste universelle de films, il a été nécessaire de partir de l'un des sites que nous traitions pour en construire une. En raison de sa complétude, on a choisi pour cette construction IMDB. On a donc exploré ce que l'on pouvait extraire à l'aide du moteur de recherche de IMDB. Ainsi, on a choisi de faire une recherche par période, et d'extraire les résultats page par page (à raison de 50 par page). L'avantage de cette méthode est que si l'on considère que notre source est très complète, alors on peut supposer que du jour au lendemain aucun nouveau film apparaîtra sous la rubrique d'une année déjà passée. À la fin, on avait construit une liste brute de liens IMDB.

\section{Extraction de données}
Une fois la page internet d'un film récupérée il est inévitable
de devoir la transformer pour obtenir une structure valide.
Nous avons essayé plusieurs parseurs pour nettoyer nos sources HTML et on a été satisfaits par le résultat de \textit{TagSoup}.
Nous travaillions toujours sur les arbres construits en mémoire
pour une flexibilité maximale.
L'extraction des données se fait grâce à XSLT.
Les fonctionnalités simples d'XSLT ont été suffisantes
\footnote{Hormis quelques formatages utilisant des expressions régulières simples} pour que l'on puisse extraire l'ensemble des informations
que l'on s'était fixées dans notre DTD. \\

On procède, pour chaque lien IMDB \textit{url}, ainsi: 
\begin{enumerate}
\item D'abord on extrait à l'aide de \textit{imdb.xslt} une fiche de base contenant titre, année, directeur, acteurs, etc.
\item On extrait à l'aide de \textit{imdb\_reviews.xslt} les critiques se trouvant sur le lien \textit{\$url/reviews}.
\item On fait une requête google avec le titre et l'année du film pour extraire le lien du film sur \verb rottentomatoes.com  (la réponse est en effet plus rapide et plus précise qu'en utilisant les moteurs de recherche internes aux sites).
\item De manière analogue à IMDB, on extrait à l'aide \textit{rt.xslt}, et \textit{rt\_reviews.xslt} les notes et les critiques du film sur RottenTomatoes.
\end{enumerate}

\section{Assembler les données}
Il est ensuite aisé de fusionner toute l'information structurée acquise
sur les différentes pages en un document XML par film.

Notre résultat final est généré par la combinaison de ces fichiers grâce à la fonction \verb document  d'XSLT.
On obtient ainsi un unique document XML validant notre modèle de données (movie.dtd), pouvant servir de base pour répondre à des requêtes diverses
(consultation d'information, croisements, analyses, ...).

\section{Utilisation}

Pour extraire et traiter les films de l'année 1994 des pages 0 à 5 (incluses) on fait la commande:

\begin{verbatim}
java -jar webdata.jar -b xml/1994/ 1994 0 5 -o xml/result1994.xml
\end{verbatim}

Dans le dossier xml/1994/ on verra apparaître chacune des fiches de films traités.
Si on lance en parallèle,

\begin{verbatim} 
java -jar webdata.jar -b xml/1995/ 1995 0 5 -o xml/result1995.xml 
\end{verbatim}

On peut finalement combiner nos résultats avec 

\begin{verbatim} 
java -jar webdata.jar -m xml/ -o xml/result1994-1995.xml
\end{verbatim}

\section{Conclusion}

Au final nous avons réalisé notre but. Avec notre schéma de traitement, il serait facile d'inclure aussi \verb allocine.fr , ou n'importe quel autre site, modulo des aspects de langue. Ce qu'on pourrait faire après serait d'optimiser notre procédé pour un traitement parallèle des données.

\end{document}
